﻿#ifndef HIMAGEOPERATOR_H
#define HIMAGEOPERATOR_H

#include <QObject>
#include <QQueue>
#include <QString>
#include <QMutex>
#include <QFileInfo>
#include <QSqlQueryModel>
#include "def.h"



class GxImageOperator : public QObject
{
    Q_OBJECT
public:
    explicit GxImageOperator(QObject *resultObj, int index = 0);
    ~GxImageOperator();

    //获取关联表的模型
    QSqlQueryModel *getModel();

    //获取抓取到的图片数量
    quint32 count() const;  

    //获取当前序号
    int index() const;

public Q_SLOTS:
    //主函数
    void work();

	//推送操作请求
    void push(DBOperationInfo node);

    //停止
    void stop();

    //更新表格模型
    void updateModel();

private:
    //初始化实例
    bool initDB();

    //建表
    void createTable();

    //添加目录
    void addDir(const DBOperationInfo& node);
    //移除目录
    void removedir(const DBOperationInfo& node);
    
    //后一张
    void next();

    //前一张
    void previous();

    //获取当前索引位置对应的图片
    bool getCurrentImage(QString& strImage);

    //遍历目录下的图片
    QStringList getPictureFromDir(const QFileInfo& dirInfo, bool recursive=false);

    //更新图片数量
    void updateRowCount();


Q_SIGNALS:
    void done();    //全部结束

private:
    QObject *m_pRevObj;
    quint32 m_uiTotalImages;
    int m_iCurrentIndex;

    QSqlQueryModel *m_pQueryModel;
};

#endif // HIMAGEOPERATOR_H
